package urlfetch

import "code.google.com/p/appengine-go/appengine/urlfetch"

urlfetch提供了一个http.RoundTripper接口的实现,用于抓取URL页面。

Index

Variables

var ErrTruncatedBody = errors.New("urlfetch: truncated body")

如果response的主体被App Engine代理截断,最后一次Read()就会返回本错误。

func Client

func Client(context appengine.Context) *http.Client

Client返回一个使用urlfetch.Transport的*http.Client,该client采用5秒deadline,并会检查SSL证书的合法性。

type Transport

type Transport struct {
    Context  appengine.Context
    Deadline time.Duration // 0表示默认的5秒
    // 控制app是否会检查https链接的证书合法性
    // 只有格式正确、有权威机构签名并与主机名匹配的证书才合法
    // 如设为假则只有证书合法才会发送请求,设为真不检查证书
    AllowInvalidServerCertificate bool
}

Transport是用于App Engine的http.RoundTripper 接口实现。使用者一般避免直接使用本类型。

func (*Transport) RoundTrip

func (t *Transport) RoundTrip(req *http.Request) (res *http.Response, err error)

RoundTrip发出request并返回该请求的response。如果request不支持或者抓取失败都会返回错误。注意HTTP返回码为5xx、403、404等并非错误,错误码仍会设为nil。